package com.yanliang.model;

import com.yanliang.utils.HttpProtocolUtil;
import com.yanliang.utils.StaticResourceUtil;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;

/**
 * 封装Response对象，需要依赖于OutputStream
 * 该对象需要提供核心方法，输出html
 * @author yanliang
 * @date 5/10/20202:47 PM
 */
public class Response {

	private OutputStream outputStream;

	/**
	 *
	 * @param path  url，随后要根据url来获取到静态资源的绝对路径，进一步根据绝对路径读取该静态资源文件，最终通过
	 *                  输出流输出
	 *              /-----> classes
	 */
	public void outputHtml(String path) throws IOException {
		// 获取静态资源文件的绝对路径
		String absoluteResourcePath = StaticResourceUtil.getAbsolutePath(path);

		// 输入静态资源文件
		File file = new File(absoluteResourcePath);
		if(file.exists() && file.isFile()) {
			// 读取静态资源文件，输出静态资源
			StaticResourceUtil.outputStaticResource(new FileInputStream(file),outputStream);
		}else{
			// 输出404
			output(HttpProtocolUtil.getHttpHeader404());
		}

	}

	public void outputHtml() throws IOException {
		output(HttpProtocolUtil.getHttpHeader404());
	}

	// 使用输出流输出指定字符串
	public void output(String content) throws IOException {
		outputStream.write(content.getBytes());
	}

	public Response() {
	}

	public Response(OutputStream outputStream) {
		this.outputStream = outputStream;
	}
}
